home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / ELECTRIC / DSPICE0S.ZIP / moscap.c < prev    next >
C/C++ Source or Header  |  1992-11-22  |  5KB  |  143 lines

  1. /* moscap.f -- translated by f2c (version of 3 February 1990  3:36:42).
  2.    You must link the resulting object file with the libraries:
  3.     -lF77 -lI77 -lm -lc   (in that order)
  4. */
  5.  
  6. #include "f2c.h"
  7.  
  8. /* Common Block Declarations */
  9.  
  10. struct {
  11.     doublereal vto, beta, gamma, phi, phib, cox, xnsub, xnfs, xd, xj, xld, 
  12.         xlamda, uo, uexp, vbp, utra, vmax, xneff, xl, xw, vbi, von, vdsat,
  13.          qspof, beta0, beta1, cdrain, xqco, xqc, fnarrw, fshort;
  14.     integer lev;
  15. } mosarg_;
  16.  
  17. #define mosarg_1 mosarg_
  18.  
  19. struct {
  20.     doublereal omega, time, delta, delold[7], ag[7], vt, xni, egfet, xmu, 
  21.         sfactr;
  22.     integer mode, modedc, icalc, initf, method, iord, maxord, noncon, iterno, 
  23.         itemno, nosolv, modac, ipiv, ivmflg, ipostp, iscrch, iofile;
  24. } status_;
  25.  
  26. #define status_1 status_
  27.  
  28. struct {
  29.     doublereal value[200000];
  30. } blank_;
  31.  
  32. #define blank_1 blank_
  33.  
  34. /*<       subroutine moscap(vgd,vgs,vgb,covlgd,covlgs,covlgb, >*/
  35. /*<      1   capbd,capbs,cggb,cgdb,cgsb,cbgb,cbdb,cbsb, >*/
  36. /*<      2   gcggb,gcgdb,gcgsb,gcbgb,gcbdb,gcbsb, >*/
  37. /*<      3   gcdgb,gcddb,gcdsb,gcsgb,gcsdb,gcssb, >*/
  38. /*<      4   qgate,qchan,qbulk,qdrn,qsrc) >*/
  39. /* Subroutine */ int moscap_(vgd, vgs, vgb, covlgd, covlgs, covlgb, capbd, 
  40.     capbs, cggb, cgdb, cgsb, cbgb, cbdb, cbsb, gcggb, gcgdb, gcgsb, gcbgb,
  41.      gcbdb, gcbsb, gcdgb, gcddb, gcdsb, gcsgb, gcsdb, gcssb, qgate, qchan,
  42.      qbulk, qdrn, qsrc)
  43. doublereal *vgd, *vgs, *vgb, *covlgd, *covlgs, *covlgb, *capbd, *capbs, *cggb,
  44.      *cgdb, *cgsb, *cbgb, *cbdb, *cbsb, *gcggb, *gcgdb, *gcgsb, *gcbgb, *
  45.     gcbdb, *gcbsb, *gcdgb, *gcddb, *gcdsb, *gcsgb, *gcsdb, *gcssb, *qgate,
  46.      *qchan, *qbulk, *qdrn, *qsrc;
  47. {
  48.     /* Local variables */
  49.     static doublereal gcgxd, gcdxd, gcdxs, gcsxd, gcgxs, gcsxs;
  50. #define nodplc ((integer *)&blank_1)
  51. #define cvalue ((complex *)&blank_1)
  52.     static doublereal gcd, gcg, qgb, qgd, gcs, qgs;
  53.  
  54. /*<       implicit double precision (a-h,o-z) >*/
  55. /* spice version 2g.6  sccsid=mosarg 3/15/83 */
  56. /*<       common /mosarg/ vto,beta,gamma,phi,phib,cox,xnsub,xnfs,xd,xj,xld, >*/
  57. /*<      1   xlamda,uo,uexp,vbp,utra,vmax,xneff,xl,xw,vbi,von,vdsat,qspof, >*/
  58. /*<      2   beta0,beta1,cdrain,xqco,xqc,fnarrw,fshort,lev >*/
  59. /* spice version 2g.6  sccsid=status 3/15/83 */
  60. /*<       common /status/ omega,time,delta,delold(7),ag(7),vt,xni,egfet, >*/
  61. /*<      1   xmu,sfactr,mode,modedc,icalc,initf,method,iord,maxord,noncon, >*/
  62. /*<      2   iterno,itemno,nosolv,modac,ipiv,ivmflg,ipostp,iscrch,iofile >*/
  63. /* spice version 2g.6  sccsid=blank 3/15/83 */
  64. /*<       common /blank/ value(200000) >*/
  65. /*<       integer nodplc(64) >*/
  66. /*<       complex cvalue(32) >*/
  67. /*<       equivalence (value(1),nodplc(1),cvalue(1)) >*/
  68.  
  69. /*     compute equivalent conductances */
  70. /*     divide up the channel charge (1-xqc)/xqc to source and drain */
  71.  
  72. /*<       gcg=(cggb+cbgb)*ag(1) >*/
  73.     gcg = (*cggb + *cbgb) * status_1.ag[0];
  74. /*<       gcd=(cgdb+cbdb)*ag(1) >*/
  75.     gcd = (*cgdb + *cbdb) * status_1.ag[0];
  76. /*<       gcs=(cgsb+cbsb)*ag(1) >*/
  77.     gcs = (*cgsb + *cbsb) * status_1.ag[0];
  78. /*<       gcgxd=-xqc*gcg >*/
  79.     gcgxd = -mosarg_1.xqc * gcg;
  80. /*<       gcgxs=-(1.0d0-xqc)*gcg >*/
  81.     gcgxs = -(1. - mosarg_1.xqc) * gcg;
  82. /*<       gcdxd=-xqc*gcd >*/
  83.     gcdxd = -mosarg_1.xqc * gcd;
  84. /*<       gcdxs=-(1.0d0-xqc)*gcd >*/
  85.     gcdxs = -(1. - mosarg_1.xqc) * gcd;
  86. /*<       gcsxd=-xqc*gcs >*/
  87.     gcsxd = -mosarg_1.xqc * gcs;
  88. /*<       gcsxs=-(1.0d0-xqc)*gcs >*/
  89.     gcsxs = -(1. - mosarg_1.xqc) * gcs;
  90. /*<       gcdgb=gcgxd-covlgd*ag(1) >*/
  91.     *gcdgb = gcgxd - *covlgd * status_1.ag[0];
  92. /*<       gcddb=gcdxd+(capbd+covlgd)*ag(1) >*/
  93.     *gcddb = gcdxd + (*capbd + *covlgd) * status_1.ag[0];
  94. /*<       gcdsb=gcsxd >*/
  95.     *gcdsb = gcsxd;
  96. /*<       gcsgb=gcgxs-covlgs*ag(1) >*/
  97.     *gcsgb = gcgxs - *covlgs * status_1.ag[0];
  98. /*<       gcsdb=gcdxs >*/
  99.     *gcsdb = gcdxs;
  100. /*<       gcssb=gcsxs+(capbs+covlgs)*ag(1) >*/
  101.     *gcssb = gcsxs + (*capbs + *covlgs) * status_1.ag[0];
  102. /*<       gcggb=(cggb+covlgd+covlgs+covlgb)*ag(1) >*/
  103.     *gcggb = (*cggb + *covlgd + *covlgs + *covlgb) * status_1.ag[0];
  104. /*<       gcgdb=(cgdb-covlgd)*ag(1) >*/
  105.     *gcgdb = (*cgdb - *covlgd) * status_1.ag[0];
  106. /*<       gcgsb=(cgsb-covlgs)*ag(1) >*/
  107.     *gcgsb = (*cgsb - *covlgs) * status_1.ag[0];
  108. /*<       gcbgb=(cbgb-covlgb)*ag(1) >*/
  109.     *gcbgb = (*cbgb - *covlgb) * status_1.ag[0];
  110. /*<       gcbdb=(cbdb-capbd)*ag(1) >*/
  111.     *gcbdb = (*cbdb - *capbd) * status_1.ag[0];
  112. /*<       gcbsb=(cbsb-capbs)*ag(1) >*/
  113.     *gcbsb = (*cbsb - *capbs) * status_1.ag[0];
  114.  
  115. /*     compute total terminal charges */
  116.  
  117. /*<       qgd=covlgd*vgd >*/
  118.     qgd = *covlgd * *vgd;
  119. /*<       qgs=covlgs*vgs >*/
  120.     qgs = *covlgs * *vgs;
  121. /*<       qgb=covlgb*vgb >*/
  122.     qgb = *covlgb * *vgb;
  123. /*<       qgate=qgate+qgd+qgs+qgb >*/
  124.     *qgate = *qgate + qgd + qgs + qgb;
  125. /*<       qbulk=qbulk-qgb >*/
  126.     *qbulk -= qgb;
  127. /*<       qdrn=xqc*qchan-qgd >*/
  128.     *qdrn = mosarg_1.xqc * *qchan - qgd;
  129. /*<       qsrc=(1.0d0-xqc)*qchan-qgs >*/
  130.     *qsrc = (1. - mosarg_1.xqc) * *qchan - qgs;
  131.  
  132. /*     finished */
  133.  
  134. /*<       return >*/
  135.     return 0;
  136. /*<       end >*/
  137. } /* moscap_ */
  138.  
  139. #undef cvalue
  140. #undef nodplc
  141.  
  142.  
  143.